Išsamus gidas, kaip sukonfigūruoti Python virtualias aplinkas naudojant virtualenv ir venv, užtikrinant projektų izoliaciją ir priklausomybių valdymą.
Python Virtualenv Sąranka: Izoliuotos Aplinkos Kūrimas
Python programavimo pasaulyje priklausomybių valdymas ir projektų izoliacijos užtikrinimas yra itin svarbūs kuriant patikimas ir lengvai palaikomas programas. Vienas efektyviausių būdų tai pasiekti yra naudojant virtualias aplinkas. Virtuali aplinka – tai autonominis katalogas, kuriame yra specifinis Python interpretatorius kartu su jame įdiegtais paketais. Tai leidžia vienu metu dirbti su keliais projektais, kurių kiekvienas turi savo unikalų priklausomybių rinkinį, išvengiant konfliktų dėl skirtingų paketų versijų.
Kodėl Verta Naudoti Virtualias Aplinkas?
Įsivaizduokite situaciją, kai dirbate su dviem Python projektais. Projektui A reikalinga 1.0 versija tam tikros bibliotekos, o projektui B – tos pačios bibliotekos 2.0 versija. Be virtualių aplinkų, bibliotekos įdiegimas globaliai greičiausiai sukeltų suderinamumo problemų vienam iš projektų. Virtualios aplinkos išsprendžia šią problemą, suteikdamos izoliuotas erdves kiekvienam projektui turėti savo paketų rinkinį.
Štai keletas pagrindinių virtualių aplinkų naudojimo privalumų:
- Priklausomybių izoliacija: Kiekvienas projektas turi savo priklausomybių rinkinį, taip išvengiama konfliktų.
- Versijų valdymas: Lengvai valdykite skirtingas paketų versijas skirtingiems projektams.
- Projekto atkuriamumas: Užtikrinkite, kad jūsų projektą būtų galima lengvai atkurti kituose kompiuteriuose su tomis pačiomis priklausomybėmis.
- Švari globali aplinka: Išlaiko jūsų globalią Python diegimo aplinką švarią ir neperkrautą.
Virtualių Aplinkų Konfigūravimas: virtualenv ir venv
Yra du pagrindiniai įrankiai virtualioms aplinkoms kurti Python aplinkoje: virtualenv
ir venv
. virtualenv
yra trečiosios šalies paketas, kuris naudojamas jau ilgą laiką ir siūlo platų funkcijų spektrą. venv
yra integruotas modulis Python 3.3 ir naujesnėse versijose, suteikiantis lengvesnę alternatyvą virtualenv
. Abu įrankiai pasiekia tą patį tikslą: sukuria izoliuotas Python aplinkas.
virtualenv Naudojimas
virtualenv
yra populiarus ir plačiai naudojamas įrankis virtualioms aplinkoms kurti. Štai kaip jį naudoti:
Diegimas
Pirmiausia turite įdiegti virtualenv
. Tai galite padaryti naudodami pip:
pip install virtualenv
Virtualios Aplinkos Kūrimas
Kai virtualenv
yra įdiegtas, galite sukurti virtualią aplinką savo projekto kataloge. Terminale pereikite į savo projekto katalogą ir paleiskite šią komandą:
virtualenv myenv
Ši komanda sukuria naują katalogą pavadinimu myenv
(galite pasirinkti bet kokį norimą pavadinimą), kuriame yra virtuali aplinka. myenv
kataloge bus šie pakatalogiai:
bin
: Jame yra Python vykdomasis failas ir aktyvavimo scenarijai.include
: Jame yra C antraštės Python plėtiniams kompiliuoti.lib
: Jame yra site-packages katalogas, kuriame bus įdiegti paketai.
Virtualios Aplinkos Aktyvavimas
Norėdami naudoti virtualią aplinką, turite ją aktyvuoti. Tai pakeis jūsų apvalkalo (shell) aplinkos kintamuosius, kad būtų naudojamas Python interpretatorius ir paketai iš virtualios aplinkos.
Linux/macOS sistemose naudokite šią komandą:
source myenv/bin/activate
Windows sistemoje naudokite šią komandą:
myenv\Scripts\activate
Po aktyvavimo pastebėsite, kad jūsų terminalo eilutė pasikeis, nurodydama aktyvią virtualią aplinką (pvz., (myenv) $
). Dabar bet kokie paketai, kuriuos įdiegsite naudodami pip, bus įdiegti virtualioje aplinkoje ir neturės įtakos jūsų globaliai Python instaliacijai ar kitoms virtualioms aplinkoms.
Virtualios Aplinkos Deaktyvavimas
Baigę darbą su projektu, galite deaktyvuoti virtualią aplinką paleisdami šią komandą:
deactivate
Tai grąžins jūsų terminalo eilutę į įprastą būseną ir vėl pradėsite naudoti globalią Python instaliaciją.
venv Naudojimas
venv
yra integruotas modulis Python 3.3 ir naujesnėse versijose, suteikiantis lengvesnę alternatyvą virtualenv
. Paprastai rekomenduojama naudoti venv
, jei naudojate Python versiją, kurioje jis yra.
Virtualios Aplinkos Kūrimas
Norėdami sukurti virtualią aplinką naudojant venv
, terminale pereikite į savo projekto katalogą ir paleiskite šią komandą:
python3 -m venv myenv
Ši komanda sukuria naują katalogą pavadinimu myenv
(arba bet kokį jūsų pasirinktą pavadinimą), kuriame yra virtuali aplinka, panašiai kaip ir su virtualenv
.
Virtualios Aplinkos Aktyvavimas
Aktyvavimo procesas su venv
yra toks pat kaip ir su virtualenv
. Linux/macOS sistemose naudokite šią komandą:
source myenv/bin/activate
Windows sistemoje naudokite šią komandą:
myenv\Scripts\activate
Po aktyvavimo jūsų terminalo eilutė nurodys aktyvią virtualią aplinką, ir bet kokie įdiegti paketai bus izoliuoti aplinkos viduje.
Virtualios Aplinkos Deaktyvavimas
venv
aplinkos deaktyvavimas yra toks pat kaip ir su virtualenv
:
deactivate
Priklausomybių Valdymas su pip
Aktyvavę virtualią aplinką, galite naudoti pip paketams diegti, atnaujinti ir šalinti. Štai keletas dažniausiai naudojamų pip komandų:
- Paketo diegimas:
pip install paketo_pavadinimas
(pvz.,pip install requests
) - Konkrečios paketo versijos diegimas:
pip install paketo_pavadinimas==versija
(pvz.,pip install requests==2.26.0
) - Paketo atnaujinimas:
pip install --upgrade paketo_pavadinimas
(pvz.,pip install --upgrade requests
) - Paketo šalinimas:
pip uninstall paketo_pavadinimas
(pvz.,pip uninstall requests
) - Įdiegtų paketų sąrašas:
pip list
arbapip freeze
Reikalavimų Failo Generavimas
Norint užtikrinti, kad jūsų projekto priklausomybes būtų galima lengvai atkurti kituose kompiuteriuose, geriausia praktika yra generuoti requirements.txt
failą. Šiame faile pateikiamas visų jūsų virtualioje aplinkoje įdiegtų paketų ir jų versijų sąrašas.
Norėdami sugeneruoti requirements.txt
failą, aktyvuokite savo virtualią aplinką ir paleiskite šią komandą:
pip freeze > requirements.txt
Tai sukurs failą pavadinimu requirements.txt
jūsų projekto kataloge. Tada galite įtraukti šį failą į savo projekto versijų kontrolės sistemą (pvz., Git), kad kiti galėtų lengvai įdiegti tas pačias priklausomybes.
Diegimas iš Reikalavimų Failo
Norėdami įdiegti priklausomybes, nurodytas requirements.txt
faile, aktyvuokite savo virtualią aplinką ir paleiskite šią komandą:
pip install -r requirements.txt
Tai įdiegs visus paketus ir jų nurodytas versijas iš requirements.txt
failo.
Geriausios Virtualių Aplinkų Naudojimo Praktikos
Štai keletas geriausių praktikų, kurių reikėtų laikytis naudojant virtualias aplinkas:
- Kiekvienam projektui sukurkite virtualią aplinką: Tai užtikrina, kad kiekvienas projektas turės savo izoliuotą priklausomybių rinkinį.
- Nuolat atnaujinkite reikalavimų failą: Reguliariai atnaujinkite savo
requirements.txt
failą, kad jis atspindėtų dabartines projekto priklausomybes. - Naudokite versijų kontrolę: Įtraukite savo virtualios aplinkos katalogą į projekto
.gitignore
failą, kad jis nebūtų įtrauktas į versijų kontrolę. Įtraukite tikrequirements.txt
failą. - Nuosekliai pavadinkite virtualias aplinkas: Naudokite nuoseklią pavadinimų suteikimo tvarką savo virtualioms aplinkoms, kad išvengtumėte painiavos. Pavyzdžiui, galite jas pavadinti
.venv
arbavenv
. - Naudokite virtualių aplinkų tvarkyklę: Apsvarstykite galimybę naudoti virtualių aplinkų tvarkyklę, pvz.,
virtualenvwrapper
arconda
, kad supaprastintumėte kelių virtualių aplinkų valdymą.
Virtualių Aplinkų Tvarkyklės
Nors virtualenv
ir venv
yra puikūs įrankiai virtualioms aplinkoms kurti, jų valdymas gali tapti sudėtingas dirbant su keliais projektais. Virtualių aplinkų tvarkyklės suteikia papildomų funkcijų ir patogumo valdant virtualias aplinkas.
virtualenvwrapper
virtualenvwrapper
yra virtualenv
plėtinių rinkinys, kuris palengvina virtualių aplinkų kūrimą, valdymą ir darbą su jomis. Jis suteikia komandas virtualioms aplinkoms kurti, aktyvuoti, deaktyvuoti ir šalinti, taip pat galimų aplinkų sąrašui peržiūrėti.
Norėdami įdiegti virtualenvwrapper
, naudokite pip:
pip install virtualenvwrapper
virtualenvwrapper
sąranka ir naudojimas priklauso nuo jūsų operacinės sistemos. Išsamesnių instrukcijų ieškokite virtualenvwrapper
dokumentacijoje.
conda
conda
yra atvirojo kodo paketų, priklausomybių ir aplinkos valdymo sistema. Ji dažnai naudojama duomenų moksle ir moksliniuose skaičiavimuose, tačiau gali būti naudojama ir bendram Python programavimui. conda
leidžia kurti ir valdyti virtualias aplinkas, taip pat diegti ir valdyti paketus.
Norėdami įdiegti conda
, atsisiųskite ir įdiekite Anaconda arba Miniconda iš Anaconda svetainės.
Norėdami sukurti naują conda aplinką, naudokite šią komandą:
conda create --name myenv python=3.9
Norėdami aktyvuoti aplinką:
conda activate myenv
Norėdami deaktyvuoti aplinką:
conda deactivate
Conda siūlo išsamų įrankių rinkinį priklausomybėms ir aplinkoms valdyti, todėl tai yra populiarus pasirinkimas sudėtingiems projektams.
Globalūs Aspektai ir Geriausios Praktikos
Dirbdami globaliose komandose ar diegdami programas skirtinguose regionuose, atsižvelkite į šiuos veiksnius:
- Nuoseklios Python versijos: Užtikrinkite, kad visi komandos nariai programavimui naudotų tą pačią Python versiją. Tai padeda išvengti netikėtų suderinamumo problemų integracijos ir diegimo metu. Pavyzdžiui, programuotojų komanda Tokijuje, Japonijoje, ir kita komanda Londone, JK, turėtų susitarti dėl vienos Python versijos.
- Standartizuotos aplinkos: Kartu su virtualiomis aplinkomis naudokite tokius įrankius kaip Docker ar Vagrant, kad sukurtumėte nuoseklias programavimo ir diegimo aplinkas skirtingose operacinėse sistemose ir infrastruktūrose. Tai garantuoja, kad jūsų programa veiks kaip tikėtasi, nepriklausomai nuo pagrindinės sistemos. Įsivaizduokite, kad diegiate programą, sukurtą macOS sistemoje, į Linux serverį; Docker naudojimas užtikrina nuoseklų veikimą.
- Priklausomybių versijų fiksavimas: Savo `requirements.txt` faile naudokite tikslius versijų numerius. Tai užtikrina, kad visi naudoja lygiai tas pačias priklausomybių versijas, sumažinant galimas klaidas, kurias sukelia skirtingos bibliotekų versijos. Užuot naudoję `requests>=2.0`, naudokite `requests==2.28.1`.
- Suderinamumas su įvairiomis platformomis: Testuokite savo programą skirtingose operacinėse sistemose (Windows, macOS, Linux), kad ankstyvame programavimo etape nustatytumėte ir išspręstumėte bet kokias platformai būdingas problemas. Debesijos pagrindu veikiančios CI/CD sistemos gali automatizuoti testavimą skirtingose platformose.
- Laiko juostos: Dirbdami su laiko atžvilgiu jautriais duomenimis, naudokite nuoseklią laiko juostą (pvz., UTC) ir tinkamai tvarkykite laiko juostų konvertavimą. Venkite pasikliauti vietinėmis laiko juostomis, nes jos gali skirtis skirtinguose regionuose.
- Simbolių kodavimas: Visiems tekstiniams failams (įskaitant išeities kodą ir konfigūracijos failus) naudokite UTF-8 kodavimą, kad užtikrintumėte tinkamą tarptautinių simbolių apdorojimą.
Dažniausių Problemų Sprendimas
Štai keletas dažniausių problemų, su kuriomis galite susidurti dirbdami su virtualiomis aplinkomis, ir kaip jas išspręsti:
- Aktyvavimo problemos: Jei kyla problemų aktyvuojant virtualią aplinką, įsitikinkite, kad naudojate teisingą aktyvavimo scenarijų savo operacinei sistemai ir apvalkalui. Patikrinkite kelią iki aktyvavimo scenarijaus ir įsitikinkite, kad jis yra vykdomasis.
- Paketų diegimo problemos: Jei kyla problemų diegiant paketus, įsitikinkite, kad aktyvavote virtualią aplinką ir naudojate teisingą pip versiją. Gali tekti atnaujinti pip į naujausią versiją.
- Priklausomybių konfliktai: Jei susiduriate su priklausomybių konfliktais, pabandykite naudoti
pipdeptree
arbapip-tools
, kad išanalizuotumėte savo priklausomybes ir nustatytumėte konfliktuojančius paketus. Gali tekti atnaujinti arba grąžinti tam tikrų paketų versijas, kad išspręstumėte konfliktus. - Virtualios aplinkos gedimas: Jei jūsų virtuali aplinka sugenda, galite pabandyti ją ištrinti ir sukurti iš naujo.
Išvada
Virtualios aplinkos yra esminis įrankis Python programuotojams, užtikrinantis priklausomybių izoliaciją, versijų valdymą ir projekto atkuriamumą. Naudodami virtualenv
arba venv
, galite užtikrinti, kad jūsų projektai būtų izoliuoti vienas nuo kito ir kad jūsų globali Python instaliacija išliktų švari. Nepamirškite kiekvienam projektui sugeneruoti requirements.txt
failą, kad palengvintumėte priklausomybių atkūrimą. Laikydamiesi šiame gide pateiktų geriausių praktikų, galite optimizuoti savo Python programavimo procesą ir kurti patikimesnes bei lengviau palaikomas programas. Globaliam bendradarbiavimui standartizuotos aplinkos ir kruopštus priklausomybių valdymas yra svarbiausi.